package com.ruoyi.system.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.system.entity.AbdulBaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import com.ruoyi.common.annotation.Excel;

/**
 * 会员等级折扣操作记录（存储会员等级的创建、删除、默认设置及修改等操作记录）对象 member_level_operation_log
 *
 * @author ruoyi
 * @date 2025-05-14
 */
@ApiModel("会员等级折扣操作记录")
@Data
public class MemberLevelOperationLog extends AbdulBaseEntity {
    private static final long serialVersionUID = 1L;

    /** 操作记录唯一标识符（自增主键） */
    @ApiModelProperty("操作记录唯一标识符（自增主键）")
    private Long id;

    /** 操作类型（CREATE: 创建会员等级，DELETE: 删除会员等级，SET_DEFAULT: 设置默认会员等级，UPDATE: 修改会员等级） */
    @Excel(name = "操作类型", readConverterExp = "C=REATE:,创=建会员等级，DELETE:,删=除会员等级，SET_DEFAULT:,设=置默认会员等级，UPDATE:,修=改会员等级")
    @ApiModelProperty("操作类型（CREATE: 创建会员等级，DELETE: 删除会员等级，SET_DEFAULT: 设置默认会员等级，UPDATE: 修改会员等级）")
    private String operationType;

    /** 会员等级编号（关联member_level_discount表的id） */
    @Excel(name = "会员等级编号", readConverterExp = "关=联member_level_discount表的id")
    @ApiModelProperty("会员等级编号（关联member_level_discount表的id）")
    private Long levelId;

    /** 操作开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "操作开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty("操作开始时间")
    private Date operationStartAt;

    /** 操作结束时间（若操作是异步或耗时操作，可记录结束时间） */
    @Excel(name = "操作结束时间", readConverterExp = "若=操作是异步或耗时操作，可记录结束时间")
    @ApiModelProperty("操作结束时间（若操作是异步或耗时操作，可记录结束时间）")
    private Date operationEndAt;

    /** 操作员工ID（关联员工表的id） */
    @Excel(name = "操作员工ID", readConverterExp = "关=联员工表的id")
    @ApiModelProperty("操作员工ID（关联员工表的id）")
    private Long operatorId;

    /** 操作员工姓名（冗余字段，便于直接展示） */
    @Excel(name = "操作员工姓名", readConverterExp = "冗=余字段，便于直接展示")
    @ApiModelProperty("操作员工姓名（冗余字段，便于直接展示）")
    private String operatorName;

    /** 操作详情（JSON格式或文本，记录具体修改内容，如"修改商品折扣从80%到70%"） */
    @Excel(name = "操作详情")
    @ApiModelProperty("操作详情（JSON格式或文本，记录具体修改内容，如\"修改商品折扣从80%到70%\"）")
    private String operationDetails;

    /** 操作IP地址（记录操作来源，用于安全审计） */
    @Excel(name = "操作IP地址", readConverterExp = "记=录操作来源，用于安全审计")
    @ApiModelProperty("操作IP地址（记录操作来源，用于安全审计）")
    private String ipAddress;

    /** 操作状态（SUCCESS: 成功，FAILED: 失败，PROCESSING: 处理中） */
    @Excel(name = "操作状态", readConverterExp = "S=UCCESS:,成=功，FAILED:,失=败，PROCESSING:,处=理中")
    @ApiModelProperty("操作状态（SUCCESS: 成功，FAILED: 失败，PROCESSING: 处理中）")
    private String status;

    /** 错误信息（当操作状态为FAILED时，记录错误详情） */
    @Excel(name = "错误信息", readConverterExp = "当=操作状态为FAILED时，记录错误详情")
    @ApiModelProperty("错误信息（当操作状态为FAILED时，记录错误详情）")
    private String errorMessage;

    /** 手机号 */
    @Excel(name = "手机号")
    @ApiModelProperty("手机号")
    private String phone;
}